There exists an ever-growing number of systems requiring onboard solutions for image processing. For example, onboard stereovision solutions are required in industrial or domestic robots, in devices for aiding driving or indeed automated driving of vehicles such as drones or automobiles, in devices of vision prosthesis type, or indeed in commonly used devices such as portable telephones. Stereovision consists of the estimation of the depth of the points forming a scene, which is customarily transcribed via two images captured by two sensors disposed in an appropriate manner relative to one another, and forming a stereoscopic pair. There exists a plurality of stereovision algorithms, most being based on the intensity of the pixels constituting the images to be processed. All these algorithms are based on the matching of pixel neighborhoods, with the aim of determining the disparity of the pixels constituting one image relative to the pixels of the other image. For a given reference image, the set of disparities is thus determined by pairing each of the pixels of which it consists with the pixels of the second image; this results in an image customarily designated a “disparity map”.
Thus, a first step of the matching of pixel neighborhoods customarily consists in determining pairing scores, representative of the degree of similarity between pixels. A second step then consists in analyzing the pairing scores with the aim of choosing the pair of pixels affording the right disparity, possibly based on local, semi-global information, for example on a line of the image, or on global information, that is to say on the entirety of the image, and possibly being associated with a filtering aimed at eliminating erroneous disparities.
Among the algorithms, sometimes designated “metrics”, known from the prior art, may be cited:                the sum of the absolute discrepancies, commonly designated by the acronym “SAD”, from the expression “Sum of Absolute Differences”. This metric is the simplest to implement, and so is one of the most widely used; it is based on the computation of pairing scores as a function of the sum of the absolute differences between the intensities of the pixels,        the sum of the discrepancies squared, commonly designated by the initials “SSD”, from the expression “Sum of Squared Differences”. This metric is close to the aforementioned SAD metric, but is based, rather than on absolute values of differences, on squares of the values of differences. The effect of the SSD metric is to increase the discrepancies, but also to increase the dynamic range of the pairing scores. On the other hand, it exhibits the drawback of greater complexity of the computations to be implemented,        the Normalized Cross Correlation, commonly designated by the initials “NCC”. The advantage of this metric is that it is insensitive to differences in gain between the processed images, in contradistinction to the two aforementioned metrics SAD and SSD. The drawback of the NCC is that it requires complex computations, resorting to multiplication, square root and division operations, and furthermore exhibits, in the manner of the SAD and SSD metrics, sensitivity to the biases between the images to be processed,        the metrics designated by the initials ZSAD, ZSSD and ZNCC, respectively derived from the aforementioned metrics SAD, SSD and NCC. These metrics have the advantage of insensitivity to differences in gain as far as the ZSAD and ZSSD metrics are concerned, and of insensitivity to differences in gain and to biases, as far as ZNCC is concerned. However, these metrics exhibit the drawback of necessitating computational resources that are substantially more constraining,        the metric designated by the term “Census”. The Census scheme is a scheme for computing pairing scores consisting firstly in creating a census vector whose components result from the comparison between each neighborhood pixel and the central pixel of the neighborhood window, and secondly, in generating the pairing score by computing the Hamming distance between the census vectors of each neighborhood window. This metric exhibits the drawback of being very expensive in terms of computational resources.        
The various existing algorithms for matching neighborhoods of pixels are more or less well suited to particular applications. Indeed, one and the same application may require recourse to various algorithms to produce effective results in various situations. For example, within the framework of a stereovision application in a motor vehicle, a given algorithm may be more or less suited depending on whether the vehicle is travelling on a motorway or whether it is travelling in an urban zone; or else, if the vehicle is travelling at night or by day, in a zone of light or heavy traffic, etc. Also, certain applications or certain configurations within the framework of one and the same application may require that filters are for example applied to the images, before the matching.
Hardware solutions implementing existing algorithms are known from the prior art. Most hardware solutions are dedicated, and implement a given algorithmic chain as a function of the constraints to which they are tied, imposed by the application. The pairing scores may be computed according to a fixed metric, on one or more fixed neighborhoods, and the choice of the disparity may be performed according to a scheme which may or may not be followed by error filtering. A drawback of the existing hardware solutions is that they offer limited flexibility, or indeed none, as regards the metric used, and/or the nature and the dimensions of the neighborhood taken into account in the algorithms. It may be desirable, in certain applications, to have an architecture allowing greater flexibility, and possibilities of reconfiguration, by an operator or else in an automatic manner, of the metric used and of the neighborhood.
There exist hardware solutions allowing some flexibility, but the latter is obtained at the price of overdimensioned hardware architectures, using refined computation means relying on powerful microprocessors and voluminous memories. Such architectures are then customarily under-utilized within the framework of specific applications, and are not compatible with onboard applications requiring hardware architectures of small dimensions and of sparing consumption during use.